package com.spark.common.core.entity.generation;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.spark.common.annotation.query.Query;
import com.spark.common.core.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 模型字段
 *
 * @author LYCHEE
 * @date 2025/02/24 15:25
 */
@Data
@TableName("online_model_fields")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class GenModelFields extends BaseEntity {

    /**
     * 模型ID
     */
    @Query
    @NotBlank(message = "模型ID不能为空")
    private String modelId;

    /**
     * 字段名称
     */
    @NotBlank(message = "字段名称不能为空")
    private java.lang.String fieldName;

    /**
     * 字段注释
     */
    @NotBlank(message = "字段注释不能为空")
    private java.lang.String fieldAnnotation;

    /**
     * 字段备注
     */
    private java.lang.String fieldRemark;

    /**
     * 字段类型
     */
    @NotBlank(message = "字段类型不能为空")
    private java.lang.String fieldType;

    /**
     * 字段长度
     */
    @NotNull(message = "字段长度不能为空")
    private java.lang.Integer fieldLength;

    /**
     * 小数点
     */
    @NotNull(message = "小数点不能为空")
    private java.lang.Integer fieldDecimalPoint;

    /**
     * 默认值
     */
    private java.lang.String fieldDefaultVal;

    /**
     * 主键
     * : 0否 1是
     */
    @Query
    @NotNull(message = "主键不能为空")
    private java.lang.Boolean fieldPrimaryKey;

    /**
     * 非空
     * : 0否 1是
     */
    @Query
    @NotNull(message = "非空不能为空")
    private java.lang.Boolean fieldNotNull;

    /**
     * 唯一
     * : 0否 1是
     */
    @Query
    @NotNull(message = "唯一不能为空")
    private java.lang.Boolean fieldUnique;

    /**
     * 查询
     *  : 0否 1是
     */
    private java.lang.Integer fieldSelect;

    /**
     * 查询模式
     *  : 精确匹配eq 模糊匹配like 范围匹配between
     */
    private java.lang.String fieldSelectMode;

    /**
     * 关联
     *  : 0否 1是
     */
    private java.lang.Integer fieldRelevance;

    /**
     * 关联模式
     *  : 0关联模型 1关联字典
     */
    private java.lang.Integer fieldRelevanceMode;

    /**
     * 关联模型Code
     */
    private java.lang.String fieldRelevanceModeModelCode;

    /**
     * 关联模型关系
     *  : 1-1 n-1 n-n
     */
    private java.lang.String fieldRelevanceModeModelRelation;

    /**
     * 关联模型的字段,默认id
     */
    private java.lang.String fieldRelevanceModeModelField;

    /**
     * 关联模型key
     *  : 模型:模型显示值字段;字典：字典code
     */
    private java.lang.String fieldRelevanceModeValKey;

    /**
     * 排序
     *  : 0否 1是
     */
    private java.lang.Integer fieldSort;

    /**
     * 排序模式
     *  : asc升序 desc降序 默认降序
     */
    private java.lang.String fieldSortMode;

    /**
     * 排序优先级
     */
    private java.lang.Integer fieldSortPriority;

    /**
     * 校验
     *  : 0否 1是
     */
    private java.lang.Integer fieldRule;

    /**
     * 校验时机
     *  : 0全部 1新增 2编辑
     */
    private java.lang.Integer fieldRuleOpportunity;

    /**
     * 非空校验
     *  : 0否 1是
     */
    private java.lang.Integer fieldRuleNotNull;

    /**
     * 最小长度校验
     */
    private java.lang.Integer fieldRuleMin;

    /**
     * 最大长度校验
     */
    private java.lang.Integer fieldRuleMax;

    /**
     * 自定义正则校验
     *  : 0否 1是
     */
    private java.lang.Integer fieldRuleRegular;

    /**
     * 正则Code
     */
    private java.lang.String fieldRuleRegularCode;

    /**
     * 自定义正则校验表达式
     */
    private java.lang.String fieldRuleRegularExpression;

    /**
     * 组件名称
     */
    private java.lang.String componentName;

    /**
     * 是否可以操作
     */
    @TableField(exist = false)
    private Boolean isHandle = true;
}
